The present invention relates generally to an arrangement for and method of operating a mass memory storage peripheral computer device, such as a hard disk drive, connected to a host computer using a peripheral bus in which relocatable Expansion Basic Input Output System (BIOS) location addresses are allowed. The computer has system Random Access Memory (RAM) and uses an operating system and system BIOS to operate the host computer. More particularly the present invention relates to a loadable device driver which is associated with the hard disk drive and which is loaded into the system RAM during the start-up of the computer system. The loadable device driver controls the operation of the hard disk drive in a way which does not require the system BIOS or any other protocol translation mechanism other than the loadable device driver to be provided between the hard disk drive and the operating system in order for the operating system to communicate with the hard disk drive.
During the development of the personal computer industry, the typical arrangements for operating a hard disk drive connected to a host computer have gone through a series of evolutions. When the personal computer was first being developed, it was assumed that hard disk drives would be divided into cylinders, heads, and sectors which would clearly define each data sector in which information could be stored on the hard disk drive. The DOS operating system defined a multiple byte, bit significant command structure with organizational limits of 1024 cylinders, 64 heads, and 64 sectors which corresponded to a total of 4,194,304 data sectors. The system BIOS, or a utility program used by this early computer system was used to store any defective data sectors of the hard drive which were required to be known by the system when the drive was formatted for use by the system. The system would not allow these defective data sectors to be used during the operation of the system. Therefore, only known good data sectors-were used to store data and the actual cylinder, head, and sector (CHS) on which the data was stored on the hard disk drive corresponded to the CHS data addressing information used by the operating system.
In the early stages of development, the system BIOS also contained information on all of the disk drives which could be used with the system. As the number of drives available grew this approach became more and more difficult. The solution was to create user defined configuration information which could be used by the system.
These early approaches allowed the operating system to communicate with the disk drive using a relatively simple system BIOS which did not need to perform any translation of the CHS data address information. When the operating system of these early systems made a read/write request through the device driver, the system BIOS would simply pass the CHS address information on to the disk drive without having to translate the address information into some other format. Also, the disk drive was relatively simple in that it did not require any complex disk drive firmware as part of the disk drive to provide a translation function or handle the problem of keeping track of the defective data sectors since these functions were provided by the system.
The disk drive industry independently developed its own interface standards or limits known as Integrated Device Electronics (IDE) which also included a command structure. These IDE standards imposed limits which were different from the limits imposed by the operating system and system BIOS. The IDE command structure limits were set at 65535 cylinders, 16 heads, and 256 sectors which provided a total of 268,431,360 data sectors. Since both standards utilized the same CHS addressing structure, the overall system limits were dictated by the lowest common bits for each field for the cylinders, heads, and sectors. This resulted in a combined limit of 1024 cylinders, 16 heads, and 64 sectors for a total of 1,048,576 data sectors. Although the combination of these two different limits did not initially create a problem by overly limiting the total data storage capacity of the disk drive, the demand for larger and larger capacity disk drives did eventually create desire to offer drives which provided more sectors than were available according to the combination of these two limits.
To compensate for these combined limits, translation software was developed to translate from the operating system limits to the IDE drive limits. This software was provided in the form of either translating BIOS or boot overlay software. The translation software allowed the operating system to use the entire theoretical number of data sectors which the operating system limits allowed by translating from an operating system based CHS address to a disk drive based CHS address. However, each time a read/write request was made by the operating system, the translator had to translate the operating system""s theoretical CHS address information (based on the DOS operating system standards) into logical CHS address information used by the disk drive (based on the disk drive industry standards). This translation required additional processing time slowing down the system but it increased the number of available data sectors back to the limits imposed by the operating system.
Technical developments in the disk drive industry further complicated the task of interfacing the hard disk drive with the host system. The first additional development was that the hard disk drive industry began defining each data sector according to cylinders, heads, sectors, and zones. The zones of the disk drive correspond to different groups of cylinders of the disks with each of the zones having data stored at different frequencies in order to more efficiently use the data storing density of the disks. For example, the inner cylinders which correspond to a first zone may be read and written at a first frequency, the middle cylinders making up a second zone may be read/written at a second faster frequency, and the outer cylinders associated with a third zone may be read and written at a third even faster frequency. Although this development increase the storage capacity of a given hard disk drive, it also further increased the complexity of the overall system by requiring another translation from the system BIOS CHS address information to the actual cylinder, head, sector, and zone address information actually used by the disk drive.
In another development, the disk drive industry changed the way the cylinders, heads, and sectors were typically addressed. Initially, each data sector on the disk drive included an identification field containing the address of that field and including information on whether that sector was defective or not. These identification fields for each of the data sectors used a significant portion of the data storage space on the disk drive thereby reducing the amount of usable data storage space for a given disk drive. As more advanced disk drives having more sophisticated controllers became available, the need for an identification field associated with each data sector was eliminated thereby increasing the data storage capacity of a given disk drive. However, using this approach required the defect information identifying which sectors of the disk drive are defective to be stored in a different way.
In order to solve this problem, a defect list containing a list of all the defective data sectors on the disk drive is typically stored on the memory storage of the hard disk drive and loaded into a RAM memory buffer on the disk drive device during the initialization of the disk drive so that the list is available to the hard drive controller during the operation of the disk drive. This approach requires an even more complicated controller, more complicated disk drive firmware to operate the controller, and a larger RAM memory buffer than would otherwise be required so that the defect list may be stored in the memory buffer for use throughout the operation of the disk drive. All of these requirements add still further to the cost of providing the hard disk drive. Using this defect list approach, the hard disk drive controller uses complex hardware and/or disk drive firmware to sort through this list of defective memory locations each time a read/write request is made making sure a defective data sector is not utilized. This sorting adds yet another time consuming process to the operation of the system that must be performed each time the disk drive reads or writes data and therefore slows down the overall operation of the system.
In more recent developments in computer architecture, new peripheral bus architectures such as the Peripheral Computer Interconnect (PCI) bus have been defined. These new peripheral bus architectures allowed relocatable device specific software to be loaded from the device into system RAM in the form of relocatable expansion BIOS. This greatly reduces the device""s dependency on the system BIOS. In one example of this approach, a mass storage adapter card such as a Small Computer System Interface (SCSI) card is connected to the PCI bus and contains expansion BIOS software in ROM.
Referring to FIG. 1, a typical current computer system, generally indicated by reference numeral 10, including an IDE hard disk drive and a hard disk drive connected to the system using a SCSI adapter card and a PCI bus will be described. As shown in FIG. 1, system 10 includes a host computer module 12 (hereinafter referred to in the specification and the claims as a host computer) having system BIOS ROM 13 and system RAM 14. The system is operated using a system BIOS 15 and a translating BIOS 11 which are stored within system BIOS ROM 13. A host bridge 16 connects host computer 12 to an ISA bus 17 and a PCI bus 18. A first hard disk drive 19 is connected to ISA bus 17 using ribbon cable 20. Drive 19 includes disk drive firmware 21 stored in ROM 22 and disk drive controller 23 for controlling the operation of disk drive 19. A peripheral device, in the form of a SCSI adapter card 24 is connected to PCI bus 18 and includes a protocol translator 25 for translating all of the communications passing through adapter card 24 between the PCI protocol of the PCI bus and the protocol of the adapter card, in this case SCSI protocol. Adapter card 24 also includes expansion BIOS ROM 26 which contains expansion BIOS for initializing adapter card 24 during the start-up of the system. System 10 further includes a second hard disk drive 27 which is connected to adapter card 24. Disk drive 27 includes a RAM memory buffer 28, a disk drive controller 29, and disk drive firmware 30 stored within ROM 31 for controlling the operation of the hard disk drive. 27. Hard disk drive 27 is electrically connected to adapter card 24 using ribbon cable 32. Both hard disk drive 19 and 27 are divided into cylinder, heads, sectors, and zones which specifically define each data sector within hard disk drive 19 and 27.
In a typical PCI based system as described above, when the system is turned on, system BIOS 15 checks the system first for peripheral devices connected to ISA bus 17 such as disk drive 19. In this case, when disk drive 19 is located, the system BIOS initializes disk drive 19 and configures it for use within the system. Hard disk drive 19 includes a RAM memory buffer 34 and the initialization process for hard disk drive 19 includes loading information such as a defect list of all of the defective memory locations on the hard disk drive from the memory storage of hard disk drive 19 into RAM memory buffer 34. This information is available for use by disk drive firmware 21 throughout the operation of disk drive 19.
After the ISA devices have been configured, the system then checks for peripheral devices connected to PCI bus 18 such as adapter card 24. When adapter card 24 is located, the system BIOS checks to see if there is any expansion BIOS associated with the adapter card. If there is expansion BIOS associated with the adapter card, in this case the expansion BIOS in expansion BIOS ROM 26, the expansion BIOS is loaded into RAM 14 and adapter card 24, along with any attached peripherals such as disk drive 27, are initialized. The initialization process for hard disk drive 27 includes loading information such as a defect list of all of the defective memory locations on the hard disk drive from the memory storage of hard disk drive 27 into RAM memory buffer 28 so that this information is available for use by disk drive firmware 30 throughout the operation of disk drive 27. After system 10 is finished checking for devices connected to the PCI bus of the system, the system BIOS goes on to load an operating system which is used to control the operation of the overall system.
Referring to FIG. 1 along with the block diagrams of FIGS. 2A and 2B respectively, the operation of system 10 when an application program 35 being run on the system makes a read/write request of either hard disk drive 19 or 27 will be briefly described. With respect to hard drive 19 and as shown in FIG. 2A, when application 35 makes a read/write request of hard drive 19, an operating system 36 for operating the system 10 receives the request and determines the theoretical, or logical, address information at which operating system 36 believes the data is stored within disk drive 19. Translating BIOS 11, which is provided in system BIOS ROM 15 of host computer 12, translates the logical operating system address information into system BIOS address information. System BIOS 15 then translates this address information into address information used by IDE disk drive 19. Firmware 21, using controller 23, translates the address information from the system BIOS into physical cylinder, head, sector, and zone address information used by the disk drive and checks a defective memory location list to make sure defective data locations are not utilized. Once these three translations are complete, controller 23 reads or writes the requested information.
Referring now to FIG. 2B, when application 35 makes a read/write request of drive 27, operating system 36 receives the request and determines the theoretical, or logical, address information at which operating system 36 believes the data is stored within disk drive 27. The expansion BIOS translates the logical address information used by operating system 36 to address information used by disk drives as indicated in box 38. PCI bridge 16 passes the request to protocol translator 25 on adapter card 24. Protocol translator 25 translates the request from PCI protocol to SCSI protocol and forwards the request to disk drive 27. Firmware 30, using controller 29, translates the address information into physical cylinder, head, sector, and zone address information used by the disk drive and checks the defective memory location list stored in memory buffer 28 to make sure defective data locations are not utilized. And finally, after each of these translations are complete, controller 29 reads or writes the requested information.
As can be seen by the above description, several translations are required in both directions for each information request for both disk drive 19 and disk drive 27. These, translations use processing time slowing the speed of the overall system. Also, this general approach requires a complex translating BIOS or expansion BIOS and complex disk drive firmware on the disk drive in order to operate the currently available complex disk drives typically used in current systems. These requirements add significantly to the cost of the hard disk drive by requiring (i) a substantial amount of ROM for storing the disk drive firmware, (ii) a relatively large amount of RAM memory buffer space for storing the defect list, and (iii) a more powerful processor or controller to perform the tasks of translating the address information and sorting through the defect list.
The present invention provides an arrangement for operating a mass memory storage device, such as a hard disk drive, which is connected to a host computer. As will become apparent with the description hereinafter of FIG. 4, this arrangement provides a loadable device driver including a translation mechanism which replaces all of the above described translations with a single translation performed between the operating system and the mass memory storage device. In accordance with the invention, by eliminating the multiple translations required by the prior art system, the arrangement allows simpler disk drive firmware to be provided on board the hard disk drive and significantly reduces the need for memory storage space such as ROM for storing the disk drive firmware. The invention also allows information such as defect list information to be loaded into system RAM during the start-up of the system thereby eliminating the need for RAM memory buffer space on the disk drive for storing this information for use during the operation of the disk drive. The combination of these novel approaches significantly reduces the cost of the hard disk drive.
As will be described in more detail hereinafter, an arrangement and method are disclosed herein for operating a mass memory storage peripheral computer device connected to a host computer. The host computer has system RAM associated with the host computer and is operated using an operating system and a system BIOS. The mass memory storage peripheral computer device is connected to the host computer using a peripheral bus in which relocatable expansion BIOS location addresses are allowed. The arrangement and method include a loadable device driver for controlling the operation of the mass memory storage peripheral computer device during the operation of the computer system. During the start-up of the computer system, the loadable device driver is loaded into the system RAM for use during the operation of the system. The loadable device driver allows the host computer to communicate with and control the operation of the mass memory storage peripheral computer device in a way which does not require the system BIOS or any other type of protocol translation mechanism to be provided between the loadable device driver and the operating system or between the loadable device driver and the mass memory storage device in order for the loadable device driver to communicate with the operating system and the mass memory storage device.
In one specific embodiment, the mass memory storage peripheral computer device takes the form of a hard disk drive and the loadable device driver is stored on the hard disk drive. During the start-up of the system the loadable device driver is loaded from the hard disk into the system RAM. The loadable device driver includes a translating mechanism which translates data address information between (i) logical address information used by the operating system which is associated with a theoretical location of the data within a theoretical mass memory storage device and (ii) physical address information used by the actual hard disk drive. The physical address information is associated with the actual physical location at which the data is stored within the hard disk drive. The hard disk drive includes a particular number of cylinders, heads, sectors, and zones which precisely define a particular data storage area within the hard disk drive. The physical address information provided by the loadable device driver includes information giving the correct cylinder, head, sector, and zone within which the data is stored.
In the hard disk drive embodiment being described, the loadable device driver includes permanently stored defect information identifying defective memory locations of the hard disk drive. The loadable device driver uses the permanently stored defect information to translate the data address information between the operating system and the hard disk drive such that the defective memory locations on the hard disk drive are not utilized during the operation of the system. The system also includes an arrangement for detecting additional defective memory locations on the hard disk drive during any given period of operation of the hard disk drive. The loadable device driver includes a mechanism for storing additional defect information identifying those additional defective memory locations. The additional defect information is stored during the given period of operation of the hard disk drive (i) within system RAM for use by the loadable device driver and (ii) within the hard disk drive such that the additional defective memory locations become part of the permanently stored defect information and therefore is used during subsequent initializations of the hard disk drive. The loadable device driver uses the defect information to always access the hard disk drive at an initial non-defective address location forming part of the data address information being translated between the operating system and the hard disk drive. The loadable device driver also includes means, for example a pointer, for using the defect information to identify at least the first successive defective memory location which comes after the initial non-defective address location on the hard disk drive and which is associated with the data address information being translated between the operating system and the hard disk drive.
In another aspect of the invention, an updated or revised version of the loadable device driver is provided on a computer memory storage medium such as a floppy disk or a compact disk. This updated version is used to update or revise the original loadable device driver which is stored within the hard disk drive.